home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 0007.ZIP / BASICAID.DOC < prev    next >
Text File  |  1983-07-11  |  11KB  |  272 lines

  1.  
  2.                 BASICAID
  3.  
  4.          THE BASIC PROGRAMMERS FRIEND
  5.  
  6.                   BY
  7.  
  8.                JAMES P. MORGAN
  9.           1749 AMERICANA BLVD APT 23-G
  10.               ORLANDO FLA. 32809
  11.                PH 305-826-7297
  12.  
  13.  
  14.    HAVE YOU EVER ACQUIRED A BASIC PROGRAM FROM A FRIEND AND SPENT ALOT OF
  15. TIME JUST TRYING TO UNTANGLE THE PROGRAM LOGIC AND STATEMENTS, OF COURSE YOU
  16. HAVE.
  17.  
  18.   SINCE EACH PERSONS PROGRAMMING STYLE IS DIFFERENT , SUCH AS SPACING, INDEN-
  19. TATION AND SUCH, YOU COULD USE YOUR TIME BETTER IF ALL PROGRAMS WERE ABOUT
  20. THE SAME STYLE.
  21.  
  22.    ARE YOU A OPTIMIZATION AND SPEED NUT , AS I AM, ESPECIALLY WHEN RUNNING
  23. A PROGRAM UNDER THE INTERPRETER. I DONT'T LIKE TO WAIT A SECOND LONGER THAN
  24. NECESSARY. OF COURSE BY NOW I USE THE BASIC COMPILER AS MUCH AS POSSIBLE,
  25. SINCE I WOULD RATHER WAIT 2 MINUTES THAN HAVE TO WAIT 20 MINUTES TO SEE
  26. THE RESULTS OF MY SWEAT , BLOOD AND LOST SLEEP.
  27.  
  28.    I HAVE SEEN SEVERAL PACKAGES , NOT ALL WITH THE SAME FUNCTIONS OR
  29. RANGE SELLING FROM 20 TO 80 DOLLARS. WELL THIS IS 6 MONTHS OF WORK
  30. , TO YOU FOR FREE. HOW ABOUT THE PRICE TAG ON THIS.
  31.  
  32.    YOU ASK WHAT WILL THIS PROGRAM DO FOR ME, PAY MY TAXES MAYBE. WELL
  33. NO, IT WON'T PAY YOUR TAXES BUT IT SHOULD MAKE YOUR LIFE A LITTLE EASIER.
  34.  
  35.    AS A BASIC OVERVIEW THE PROGRAM WILL, COMPRESS A BASIC PROGRAM AND REMOVE
  36. REMARKS, EXPAND A PROGRAM BY THAT I MEAN IT WILL SEPARATE MULTIPLE STATEMENTS
  37. PER BASIC LINE INTO ONE OR MORE STATEMENTS, GENEREATE CROSS REFERENCES ON
  38. PROGRAM VARIABLES AND BASIC RESERVED WORDS, AND PROBABLY THE MOST IMPORTANT
  39. WILL GENERATE A CROSS REFERENCE SHOWING ALL REFERENCES TO A SPECIFIC LINE NUMBER,
  40. THAT WERE REFERENCED BY A GOTO,GOSUB,ELSE,THEN,ERL,RESTORE OR RESUME STATEMENT.
  41.  
  42.  YOU CAN THEN FIND ALL VARIABLES, AREAS OF CODE AND SUCH THAT ARE NOT
  43. REFERENCED (AND REMOVE FOR STORAGE SAVINGS) AS WELL AS AN OVERVIEW OF
  44. PROGRAM FLOW TO FIND OUT HOW THE PROGRAM GOT TO A SPECIFIC LINE NUMBER.
  45.  
  46.      EACH FUNCTIONAL OPTION OF THE PROGRAM IS DISCUSSED BELOW:
  47.  
  48.  
  49.       1).  EXPAND A BASIC PROGRAM
  50.        ----------------------
  51.  
  52.       WILL EXPAND A COMPRESSED PROGRAM, ONE THAT HAS MULTIPLE
  53.     BASIC STATEMENTS PER LINE, SEPARATED BY A ":" INTO ONE OR
  54.     MORE UNIQUELY NUMBERED BASIC LINES WITH ONE OR MORE STATEMENTS
  55.     PER LINE.
  56.  
  57.       DURING THE EXPANDING SOME TEXT COMPRESSION WILL BE DONE,
  58.     TO REMOVE EXTRANEOUS SPACES AND SUCH.
  59.  
  60.       ALSO AN EXPANDED LISTING CAN BE REQUESTED, THAT WILL BE PRINTED
  61.     DURING THE EXPANSION.
  62.  
  63.       AN EXPANDED, OUTPUT DISK FILE, CALLED "TEMPFILE.BAS" WILL
  64.     BE CREATED ALSO. RENAME THE "TEMPFILE.BAS" IF YOU WANT TO SAVE
  65.     IT AS THE NEW VERSION OF YOUR PROGRAM.
  66.  
  67.       NOTE THAT THE INPUT BASIC PROGRAM BEING EXPANDED MUST BE
  68.     SUFFICIENTLY SEQUENCED TO ALLOW THE INSERTION OF NEW LINES
  69.     OR THE PROGAM WILL END WITH SUCH A MESSAGE. FOR EXAMPLE IF
  70.     THERE ARE 7 BASIC STATEMENTS ON A LINE, SEPARATED BY ":",
  71.     THEN IF THE ORIGINAL PROGRAM WAS NUMBER BY 5'S THE PROGRAM
  72.     WILL SEPARATE THE LINE INTO 6 MORE BASIC LINES EACH WITH A
  73.     LINE NUMBER 1 GREATER THAN THE PREVIOUS LINE NUMBER.
  74.  
  75.  
  76.       2).  COMPRESS A BASIC PROGRAM
  77.        ------------------------
  78.  
  79.      WILL COMPRESS TEXT (REMOVE EXTRANEOUS SPACES AND ":" AND SUCH)
  80.        AS WELL AS COMBINE SEPARATE BASIC LINES INTO SINGLE LINES WITH
  81.        AS MANY LOGICAL STATEMENTS PER LINE AS POSSIBLE.
  82.  
  83.     BY LOGICAL I MEAN THAT ANY "REMARK" OR "IF" OR "DATA" STATEMENTS
  84.        WILL NOT HAVE LINES ADDED TO THEM.
  85.  
  86.     ALSO ANY LINE REFERENCED BY A LOGIC BRANCH (GOTO,GOSUB..ECT) WILL
  87.        NOT BE APPENDED TO ANY OTHER LINE.
  88.  
  89.     YOU MAY REQUEST A LISTING OF THE COMPRESSED PROGRAM BE PRODUCED
  90.        DURING THE COMPRESSION RUN, BUT WILL SLOW THE PROGRAM DOWN, UNLESS
  91.        YOU HAVE A SPOOLER.
  92.  
  93.     AN COMPRESSED PROGRAM , DISK FILE,  NAMED "TEMPCOMP.BAS" IS
  94.        CREATED. DON'T FORGET TO RENAME "TEMPCOMP.BAS" IF YOU WANT IT
  95.        TO BE YOUR NEW WORKING VERSION.
  96.  
  97.  
  98.       3).  DATANAME AND RESERVED WORD CROSS REFERENCE
  99.        ------------------------------------------
  100.  
  101.       WILL PRINT A CROSS REFERENCE OF BASIC RESERVED WORDS (SUCH AS
  102.      GOTO,PRINT,CALL..ECT). RESERVED WORDS CAN BE ADDED OR DELETED
  103.      BY CHANGING THE PROGRAM DATA STATEMENTS AT THE END OF THE PROGRAM.
  104.  
  105.       AS YOU ADD OR DELETE RESERVED WORDS KEEP THEM IN ALPHABETIC ORDER,
  106.      SINCE THE PROGRAM TABLES THEM AND DOES A BINARY SEARCH ON THE TABLE.
  107.  
  108.       ALSO CHANGE THE FIRST DATA STATEMENT, THIS IS A COUNT OF THE NUMBER
  109.      OF RESERVED WORDS TO READ AND "DIM" TABLES.
  110.  
  111.       YOU WILL SEE A NUMERIC VALUE AFTER EACH RESERVED WORD ON THE DATA
  112.      STATEMENTS. IF THE VALUE IS ZERO THE RESERVED WORD WILL BE RECOGNI-
  113.      ZED AS SUCH BUT ANY REFERENCES WILL BE IGNORED AND NOT PRINTED.
  114.  
  115.       THERE ARE SEVERAL NUMERIC VALUES, AFTER THE RESERVED WORDS.
  116.      I STARTED TO GROUP THE WORDS ACCORDING TO TYPE AND FUNCTION (
  117.       I/O,BRANCH,STRING,FUNCTION..ECT) AND PROVIDE AND OPTION AS TO WHAT
  118.      FUNCTIONAL CLASS OF RESERVED WORDS WOULD BE X-REFERENCED. YOU MAY
  119.      IMPLEMENT THIS IF YOU DESIRE.
  120.  
  121.        FOR EXAMPLE, IT WOULD BE NICE TO SEE A X-REFERENCE OF ONLY
  122.      LOGIC BRANCH VERBS (GOTO,GOSUB,CALL...ECT), THEN YOU COULD SEE
  123.      WHERE PROGRAM CONTROL WOULD BE TRANSFERED TO.
  124.  
  125.  
  126.        WILL PRINT A CROSS REFERENCE (ASCENDING ON VARIABLE NAME) OF ALL
  127.      USER DEFINED PROGRAM VARIABLES.
  128.  
  129.        THIS WOULD BE GREAT FOR FINDING STATEMENTS THAT DEFINE OR MODIFY
  130.      A VARIABLE.
  131.  
  132.        ANY TYPE OF BASIC EXPLICIT VARIABLE STATE ,SUCH AS "!" OR "#" OR
  133.      "%" OR "$" ARE IGNORED, ONLY THE VARIABLE NAME WHICH CONSISTS OF THE
  134.      CHARACTERS "A-Z","." AND "0-9" ARE CONSIDERED A UNIQUE NAME.
  135.  
  136.        YOU MAY HAVE NOTICED THAT A VARIABLE NAME MAY BE DEFINED AS BEING
  137.      ONE OF SEVERAL VARIABLE TYPES. FOR EXAMPLE "A!" , "A#" , "A%", "A$"
  138.      , "A(" WHERE "A(" IS PART OF A "DIM", WOULD ALL BE RECOGNIZED TO THE
  139.      CROSS REFERENCE AS THE SAME VARIABLE, BUT DIFFERENT BY BASIC.
  140.  
  141.         OH BY THE WAY, YOU MAY DEFINE A VARIABLE WITH A TERMINATING "."
  142.        TO ALSO MAKE IT UNIQUE. FOR EXAMPLE "SPACES" IS A RESERVED WORD,
  143.        BUT "SPACES." OR "SPACES.$" OR "SPACES.%" ARE PROCESSED BY BASIC
  144.        AS USER DEFINED VARIABLES. I JUST DISCOVERED IT AND THOUGHT IT
  145.        WAS A NEAT WAY TO GET AROUND SOME RESTRICTIONS.
  146.  
  147.         ALSO YOU COULD HAVE THE FOLLOWING CODE AND IT WOULD WORK:
  148.  
  149.            10 DIM A(10)
  150.            20 A=0
  151.            30 FOR A=1 TO 10
  152.            40 A(A)=A
  153.            50 NEXT A
  154.            60 END
  155.  
  156.        CONFUSING BUT NEAT, HUH.
  157.  
  158.  
  159.       4).  LINE NUMBER CROSS REFERENCE
  160.        ---------------------------
  161.  
  162.      WILL PRODUCE A (ASCENDING BY LINE NUMBER) CROSS REFERENCE,
  163.        LISTING ANY LINE NUMBER THAT WAS REFERENCE BY ANOTHER LINE NUMBER
  164.        AND THE REFERENCING LINE NUMBER.
  165.  
  166.      THIS LINE NUMBER CROSS REFERENCE TABLE IS ALSO USED IN THE
  167.        OPTION TO COMPRESS A PROGRAM. SO THAT WE DONT THROW AWAY "REMARK"
  168.        LINES THAT ARE BRANCHED TO.
  169.      YOU SHOULD USE THE LISTINGS PRODUCED TO CHANGE THE PROGRAM LOGIC
  170.        SUCH THAT IS DOES NOT BRANCH TO ANY NON-EXECUTABLE BASIC STATEMENTS.
  171.  
  172.      THEY JUST SLOW THE PROGRAM DOWN AND MAKE IT HARD TO CHANGE LOGIC
  173.        SINCE REMOVING A REMARK MIGHT CAUSE AN ERROR, DURING RUN TIME OR
  174.        RENUMBERING.
  175.  
  176.      I AM ALL FOR ALOT OF COMMENTS IN A PROGRAM, SINCE I HARDLY EVER
  177.        REMEMBER WHAT THE PROGRAM DOES, IF I PICK IT UP 6 MONTHS LATER,
  178.        OR I TRY TO MODIFY SOMEONE ELSES PROGRAM.
  179.  
  180.     ALSO THE REMARKS TAKE UP PART OF THE "64K" THAT BASIC RUNS IN, SINCE
  181.        THEY ARE STORED EXACTLY AS SEEN ON THE SCREEN, NOT IN ANY TOKENIZED
  182.        FORM.
  183.  
  184.     ALSO NOT BRANCHING TO "REMARKS" WILL ALLOW THE COMPRESS OPTION
  185.        TO REMOVE THAT STATEMENT FROM THE OUTPUT COMPRESSED FILE.
  186.  
  187.     THIS RESULTS IN SAVINGS IN MEMORY WHEN THE PROGRAM IS STORED OR
  188.        LOADED, BUT PRIMARILY WHEN USING THE BASIC COMPILER.
  189.  
  190.     THE BASIC COMPILER MAINTAINS A LINK LIST OF LINE NUMBERS. IF YOU
  191.        DO ANY TYPE OF "ON ERROR" CHECKING IN YOUR BASIC PROGRAM, EACH LINE
  192.        NUMBER , UNDER THESE CONDITIONS , RESULTS IN 4 OR MORE BYTES TO BE
  193.        USED IN THE ".OBJ" (OBJECT) FILE CREATED BY THE COMPILE. YOU COULD SEE
  194.        WHY COMPRESSING THE PRODUCION VERSION OF THE PROGRAM COULD RESULT IN
  195.        MEMORY AND SPEED SAVINGS.A LINK LIST MUST BE SEARCH AND IF YOUR PROGAM
  196.        WAS 500 LINES THEN (500 * (4+)) BYTES MUST BE USED JUST TO MAINTAIN
  197.        THE LINE NUMBER LIST.
  198.  
  199.  
  200.    **************************************************************************
  201.  
  202.  
  203.     MACHINE REQUIREMENTS:   64K
  204.     ---------------------   BASIC
  205.                 MONOCROME/COLOR DISPLAY
  206.                 DISK DRIVE [REAL AND/OR VIRTUAL(RAM)]
  207.                 MX-80 EPSON PRINTER (OPTIONAL)
  208.  
  209.  
  210.     RUNNING THE PROGRAM:
  211.     --------------------
  212.  
  213.     TO RUN USING BASIC ----   INVOKE BASIC FROM DOS AND LOAD AND RUN
  214.  
  215.     WHILE IN DOS KEY IN ---   BASIC/F:3/C:0
  216.  
  217.     IF PROGRAM COMPILED--- THEN JUST TYPE IN THE PROGRAM NAME YOU
  218.               GIVE IT WHEN YOU LINKED THE PROGRAM
  219.  
  220.     ADDITIONAL COMMENTS:
  221.     --------------------
  222.                 IF YOU COMPILE THIS PROGRAM YOU MUST CHANGE
  223.               ANY "DIM" STATEMENTS TO A FIXED VALUE, ALSO
  224.               DONT FORGET TO CHANGE THE ASSOCIATED "DIM"
  225.               VARIABLE NAME TO AGREE WITH THE FIXED VALUE
  226.               YOU ASSIGN TO THE ARRAY.
  227.  
  228.                ALSO CHANGE THE STRING VARAIBLE "VER$" TO
  229.               A "C" TO INDICATE THE PROGRAM IS RUNNING AS
  230.               COMPILED, SINCE THE PROGRAM DOES POKE INTO
  231.               SOME BASIC AREAS ( TO CLEAR KEYBOARD BUFFER)
  232.               THAT ARE NOT THERE AFTER THE PROGRAM HAS BEEN
  233.               COMPILED. YOU ARE ASKING FOR TROUBLE IF YOU DON'T.
  234.  
  235.  
  236.               ALSO I PONDERED ADDING AN OPTION TO REMOVE
  237.               LINE NUMBERS FROM THE COMPRESSED PROGRAM, IF
  238.               THE COMPRESSED PROGRAM RUN TIME OPTION SELECTED.
  239.                 THE BASIC COMPILER SAYS HE WILL OPTIMIZE
  240.               ACROSS BASIC CODE BETTER IF LINE NUMBERS
  241.               ARE NOT USED.
  242.                 ALSO THE COMPILER WILL PROCESS A BASIC PROGRAM
  243.               CREATED BY ANY EDITOR. YOU DO NOT HAVE TO INCLUDE
  244.               LINE NUMBERS IN YOUR BASIC PROGRAM UNLESS YOU
  245.               WANT TO BRANCH TO A SPECIFIC LINE OF PROGRAM CODE.
  246.  
  247.                 I BELIEVE ALSO THE "LINE-NUMBERS" DON'T HAVE TO
  248.               BE CONSECUTIVE , JUST UNIQUE.
  249.                 ALSO THE COMPILE INCLUDES AN "COPY-INCLUDE"
  250.               OPTION AT COMPILE TIME THAT LETS YOU COPY INTO
  251.               THE BASIC PROGRAM BEING READ OTHER COMMONLY
  252.               USED CODE AND SUBROUTINES.
  253.                 IF YOU HAVE THE BASIC COMPILER YOU CAN READ
  254.               ABOUT THIS FURTHER.
  255.  
  256.  
  257.  ***************************************************************************
  258.  
  259.  
  260.               IN CLOSING
  261.               ----------
  262.  
  263.        I WOULD APPRECIATE ANY COMMENTS AS TO ENHANCEMENTS, BUGS, OR GENERAL
  264.  
  265.   USAGE. YOU MAY MAIL ME A LETTER OR LEAVE A MESSAGE ON WES MERCHANTS BBS
  266.  
  267.  (703-560-0979) OR RICH SCHINNELL'S BBS (301-949-8848).
  268.  
  269.  
  270.       I HOPE THIS LITTLE CONTRIBUTION WILL HELP YOU.
  271.  
  272.